#pragma once

#include "BitStream.h"
#include "BlockList.h"


class RLE
{
private:
	unsigned long fillLast0Series(util::BitStreamWriter *bsw, int &seriesOf0);
	unsigned long fillNumber(util::BitStreamWriter *bsw, int8_t &currentNumber);
	int _totalBlocks;
public:
	RLE(int totalBlocks);
	~RLE(void);
	unsigned long performRLE(int8_t *imageList, util::BitStreamWriter *bsw);
	unsigned long performRawEncoding(int8_t *imageList, util::BitStreamWriter *bsw);
	int8_t *performZigZag(BlockList& blockList);
};

